freecivfandomcom-20200223-history
Build-MacOSX
Introduction This page covers building freeciv from source on Mac OS X. The contents are taken, in part, from here. This page assumes familiarity with development tools like make gcc and subversion. The good news is that Freeciv compiles on Mac OS X without any source code modification. This was written with: *Freeciv ** 2.1.3 * Mac OS X ** 10.4.11 (please add on if these instructions have worked) Possible Clients Freeciv supports several clients on Mac OS X: * GTK+1 (deprecated) * GTK+2 (recommended) ** GTK2 +x11 (ported from linux) ** GTK2 +quartz (under development) * SDL * xaw (does not require supporting libraries -- ie. port or fink) the x11 / quartz choice is purely a Mac issue, and does not seem to be covered elsewhere. --User:Teyrana Before You Start There are several tools that are useful in this process, and will make our job *much* easier. These are: * subversion revision control system. Similiar to cvs. * MacPorts package system for many open source packages * Fink Package system. Similiar to MacPorts, but not as up to date. Although the source code does not need modification, it takes a good bit of work to lay the foundation so that you can compile Freeciv on top of it. Thankfully heavy lifting can be done for you by a package manager like port or fink, mentioned above. As of this writing, fink is not as up-to-date as macports. Therefore, I recomend using 'port' as your package manager. -- User:Teyrana Prepare Mac OS X Installing MacPorts *Head over to MacPorts, follow the installation instructions to install MacPorts. *The default install paths for macports is /opt/local/*. Because these aren't always included in the default paths, you may need to them to the normal compiler search paths: % export CC="gcc -I/opt/local/include/ -L/opt/local/lib/" * You will notice this problem if libraries fail to link while compiling. Installing Fink Instructions to install Fink can be found here. It's recomended that you use the included FinkCommander. You will want to install the following packages: (installing the shlib and dev packages is recomended) GTK +X11 *Install X11 and X11 SDK components. Both are available on your Mac OS X CD. However, X11 itself is also available as a download (Panther compatable download here) from Apple. *Install Xcode 1.2, 1.5 (For Panther), 2.0 (For Tiger) or 3.0 (For Leopard) *GTK+ 2.0 client - If done by a package manager, the supporting packages will be installed automatically. ** gettext ** glib2 ** pango ** atk ** gtk2 GTK +quartz (Does not yet work. ) *Install Xcode 1.2, 1.5 (For Panther), 2.0 (For Tiger) or 3.0 (For Leopard) *GTK+ 2.0 client - If done by a package manager, the supporting packages will be installed automatically. ** gettext ** glib2 ** pango ** atk ** gtk2 SDL The SDL client has improved a lot in the 2.1-beta3 release. It requires some hacks to compile, but it is definitely worth the sweat as it provides a quite different experience than the other clients. The instructions below are for OS X 10.3.9 on an iBook G3, and might or might not work on other setups. --Hima 08:41, 19 February 2007 (UTC) The required packages are: * SDL * libpng * freetype * SDL_image *''Caveat 1:'' MacPorts did not install all necessary headers for me, so I had to install the important packages manually. Download the source tarballs from the links above. *''Caveat 2:'' I had to compile SDL_image with the following variables to make it work: ./configure --disable-tif --disable-tif-shared --disable-jpg --disable-jpg-shared *''Caveat 3:'' To get SDL to work, I had to add the option "-Dmain=SDL_main" to the "--cflags)" part in the /usr/local/bin/sdl-config script Build and install in above order, then compile the Freeciv tarball with "--enable-client=sdl". If you get stuck, you might get some help from an installation guide for another SDL-based game at http://girasoli.org/?p=73 SDL Client with MacPorts I've been able to build the SDL client using the libs provided by MacPorts. Changing the "--cflags)" section of /opt/local/bin/sdl-config to -I${prefix}/include/SDL -D_GNU_SOURCE=1 -D_THREAD_SAFE \ -I${prefix}/include/ -Dmain=SDL_main Configure and Setup (1) Get Source * Option A: get source tarball from here and extract it. * Option B: get a fresh source tree: Svn * Note where you put this. This directory is the prefix directory. We'll refer to it later. At this point, it's a good idea to read the INSTALL file located in the top-level directory of the archive. It contains information on dependencies and other useful information. (2) autogen.sh This step applies only if you're building from a development version of the source (subversion). * Note: This will also run configure. If you know what you're doing, you can pass the 'configure' arguements directly to autogen.sh, and you may then skip step (3) below. (3) configure * Set up your environment: % env CC="gcc -no-cpp-precomp" CFLAGS="-O3" *To build the GTK+2 client, execute this configure command from the command line, at the top-level directory of the source archive: % ./configure \ --enable-client=gtk2 \ --prefix=/Users/your_user_name/freeciv-2.0.4 * As of version 2.1.13 there is a bug which requires building without readline: % --without-readline Compile (4) Run Make *Compile the source by executing this command: % make (4b) Troubleshooting Potential Errors During Compiling Compiling Freeciv using the before specified commands may yield the following error: stdinhand.c: In function 'freeciv_completion': stdinhand.c:4509: error: 'rl_attempted_completion_over' undeclared (first use in this function) stdinhand.c:4509: error: (Each undeclared identifier is reported only once stdinhand.c:4509: error: for each function it appears in.) make3: *** stdinhand.o Error 1 make2: *** all-recursive Error 1 make1: *** all-recursive Error 1 make: *** all Error 2 A workaround for this problem was mentioned at the Freeciv-Dev Mailing list: You can probably work around it by running ./configure --without-readline. However it would be nice to fix it if you'll help us track down the problem. This applies to users of Mac OS X 10.4 (Tiger). Install (5) Test If you've gotten this far, test your shiny new program. This command will run the client. % ./civ (6) Install and Enjoy Assuming everything works properly, execute this command to install it in directory you specified as the prefix:prefix: % make install *Now, you should be able to find three executables in the /''prefix''/bin directory: civclient civserver civmanual You might have success in launching the client by simply double-clicking on the civclient executable from within the Finder. * Enjoy! Optional Support Sound Support You need to install the following for SDL sound support: * libsdl * libsdl_mixer You'll also need to download a soundset. You can find information about sounds and sound sets here. When running Freeciv's configure script, be sure to use the following option: --with-sdl-prefix=/opt/local Furthermore, you need to define your CC environment variable to be the following: gcc= " -no-cpp-precomp -I/opt/local/include -L/opt/local/lib" After you have built the binaries, copy the .soundspec file, and the accompanying folder containing the actual sound files from the sound set archive into your path_to_freeciv/share/freeciv directory. Localization Support You need to have a functioning installation of the gettext package to be able to run Freeciv with a language other than English. When running Freeciv's configure script, be sure to use the following option: --enable-nls Furthermore, you need to define your CC environment variable to be the following (to where MacPorts install packages): gcc = "-no-cpp-precomp -I/opt/local/include -L/opt/local/lib" You may start either the server or client or both in the locale of your choice by giving a full LANG prefix when executing them. E.G. the civclient in Swedish locale: LANG="sv_SE.UTF-8 civclient" Note that by giving a full locale string as the example above, you avoid potential encoding conversion warnings and glitches. From Freeciv, a Wikia wiki.